package situ.autoweter.dao;
import java.util.Date;
import java.util.List;
import java.util.Map;

import org.springframework.stereotype.Repository;
import situ.autoweter.common.Assist;
import situ.autoweter.entity.RdChangevalue;
import org.apache.ibatis.annotations.*;
import situ.autoweter.entity.SyEmp;

/**
 * RdChangevalue的Dao接口
 * 
 * @author 
 *
 */
@Mapper
public interface RdChangevalueDao{

	/**
	 * 获得RdChangevalue数据的总行数,可以通过辅助工具Assist进行条件查询,如果没有条件则传入null
	 * 
	 * @param assist
	 * @return
	 */
	long getRdChangevalueRowCount(Assist assist);
	
	/**
	 * 获得RdChangevalue数据集合,可以通过辅助工具Assist进行条件查询,如果没有条件则传入null
	 * 
	 * @param assist
	 * @return
	 */
	List<RdChangevalue> selectRdChangevalue(Assist assist);
	/**
	 * 通过RdChangevalue的id获得RdChangevalue对象
	 * 
	 * @param id
	 * @return
	 */
	RdChangevalue selectRdChangevalueById(Object id);
	
	/**
	 * 获得一个RdChangevalue对象,以参数RdChangevalue对象中不为空的属性作为条件进行查询,返回符合条件的第一条
	 * 
	 * @param obj
	 * @return
	 */
	RdChangevalue selectRdChangevalueObjSingle(RdChangevalue obj);
	
	/**
	 * 获得一个RdChangevalue对象,以参数RdChangevalue对象中不为空的属性作为条件进行查询
	 * 
	 * @param obj
	 * @return
	 */
	List<RdChangevalue> selectRdChangevalueByObj(RdChangevalue obj);

	/**
	 * 插入RdChangevalue到数据库,包括null值
	 * 
	 * @param value
	 * @return
	 */
	int insertRdChangevalue(RdChangevalue value);
	
	/**
	 * 插入RdChangevalue中属性值不为null的数据到数据库
	 * 
	 * @param value
	 * @return
	 */
	int insertNotNullRdChangevalue(RdChangevalue value);
	
	/**
	 * 批量插入RdChangevalue到数据库,包括null值
	 * 
	 * @param value
	 * @return
	 */
	int insertRdChangevalueByBatch(List<RdChangevalue> value);
	/**
	 * 通过RdChangevalue的id删除RdChangevalue
	 * 
	 * @param id
	 * @return
	 */
	int deleteRdChangevalueById(Object id);
	
	/**
	 * 通过辅助工具Assist的条件删除RdChangevalue
	 * 
	 * @param assist
	 * @return
	 */
	int deleteRdChangevalueByAssist(Assist assist);
	
	/**
	 * 通过RdChangevalue的id更新RdChangevalue中的数据,包括null值
	 * 
	 * @param enti
	 * @return
	 */
	int updateRdChangevalueById(RdChangevalue enti);
	
	/**
	 * 通过RdChangevalue的id更新RdChangevalue中属性不为null的数据
	 * 
	 * @param enti
	 * @return
	 */
	int updateNotNullRdChangevalueById(RdChangevalue enti);
	
	/**
	 * 通过辅助工具Assist的条件更新RdChangevalue中的数据,包括null值
	 * 
	 * @param value
	 * @param assist
	 * @return
	 */
	int updateRdChangevalue(@Param("enti") RdChangevalue value, @Param("assist") Assist assist);
	
	/**
	 * 通过辅助工具Assist的条件更新RdChangevalue中属性不为null的数据
	 * 
	 * @param value
	 * @param assist
	 * @return
	 */
	int updateNotNullRdChangevalue(@Param("enti") RdChangevalue value, @Param("assist") Assist assist);

	@Select("select c.datee,c.prevalue1,c.prevalue2,c.remark,u.username,e.empnmae,c.userno from RD_ChangeValue c inner join US_User u on c.UserNo=u.UserNo inner join SY_Emp e on c.EmpID=e.ID")
    List<Map> Pagequery();
    @Select("select count(*) from RD_ChangeValue")
	Integer queryCount();
    @Select("select * from sy_emp")
	List<SyEmp> queryEmp();

    @Select({"<script> " +
			"     select c.datee,c.prevalue1,c.prevalue2,c.remark,u.username,e.empnmae,c.userno from\n" +
			"     RD_ChangeValue c inner join US_User u on c.UserNo=u.UserNo\n" +
			"     inner join SY_Emp e on c.EmpID=e.ID\n" +
			"     <where>\n" +
			"     <if test=\"date1 != null and date2 != null\">\n" +
			"     and c.Datee between #{date1} and  #{date2}\n" +
			"     </if>\n" +
			"     <if test=\"EmpID != 0\" >\n" +
			"    and empid=#{EmpID}\n" +
			"     </if>\n" +
			"     </where>" +
			"</script> "})
   List<Map> gjquery(RdChangevalue rdChangevalue);
}